// import vant from 'vant'
// import myComponents from './components.js'
// import 'vant/lib/index.css'
// import axios from 'axios'
import ZbVanSelect from './myComponents/ZbVanSelect'
import ZbVanSelectData from './myComponents/ZbVanSelectData'
import ZbForm from './myComponents/ZbForm/ZbForm'
import ZbFormItem from './myComponents/ZbForm/zb-form-item.vue'
import ZbFormSelect from './myComponents/ZbForm/form-select'
import ZbFormSelectData from './myComponents/ZbForm/form-select-data'
import ZbFormSelectDataObject from './myComponents/ZbForm/form-select-data-object'
import ZbFormSlider from './myComponents/ZbForm/form-slider'
import ZbFormUpload from './myComponents/ZbForm/form-upload'
import ZbFormUploadPictureThumb from './myComponents/ZbForm/form-upload-picture-thumb'
import ZbFormList from './myComponents/ZbForm/ZbFormList'
import ZbFormItemList from './myComponents/ZbForm/zb-formlist-item.vue'
import ZbFormTree from './myComponents/ZbForm/form-tree'
import Label from './myComponents/ZbForm/directives/label'
const components = [
  ZbVanSelect,
  ZbVanSelectData,
  ZbForm,
  ZbFormItem,
  ZbFormList,
  ZbFormSelect,
  ZbFormSelectData,
  ZbFormSelectDataObject,
  ZbFormSlider,
  ZbFormUpload,
  ZbFormUploadPictureThumb,
  ZbFormItemList,
  ZbFormTree,
  ZbFormTree,
];
const directives = [
  Label,
];

// 引入全局mixin
// import mixin from '../../utils/mixin/mixin.js'
// 引入关于是否mixin集成小程序分享的配置
// import wxshare from '../../utils/mixin/mpShare.js'
// 全局挂载引入http相关请求拦截插件
import http from '../../utils/request'

function wranning(str) {
  // 开发环境进行信息输出,主要是一些报错信息
  // 这个环境的来由是在程序编写时候,点击hx编辑器运行调试代码的时候,详见:
  // 	https://uniapp.dcloud.io/frame?id=%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e5%92%8c%e7%94%9f%e4%ba%a7%e7%8e%af%e5%a2%83
  if (process.env.NODE_ENV === 'development') {
    console.warn(str)
  }
}

// 尝试判断在根目录的/store中是否有$u.mixin.js，此文件uView默认为需要挂在到全局的vuex的state变量
// HX2.6.11版本,放到try中,控制台依然会警告,暂时不用此方式，
// let vuexStore = {};
// try {
// 	vuexStore = require("@/store/$u.mixin.js");
// } catch (e) {
// 	//TODO handle the exception
// }
// post类型对象参数转为get类型url参数
import queryParams from '../../utils/function/queryParams.js'
// 路由封装
import route from '../../utils/function/route.js'
// 时间格式化
import timeFormat from '../../utils/function/timeFormat.js'
// 时间戳格式化,返回多久之前
import timeFrom from '../../utils/function/timeFrom.js'
// 颜色渐变相关,colorGradient-颜色渐变,hexToRgb-十六进制颜色转rgb颜色,rgbToHex-rgb转十六进制
import colorGradient from '../../utils/function/colorGradient.js'
// 生成全局唯一guid字符串
import guid from '../../utils/function/guid.js'
// 主题相关颜色,info|success|warning|primary|default|error,此颜色已在uview.scss中定义,但是为js中也能使用,故也定义一份
import color from '../../utils/function/color.js'
// 根据type获取图标名称
import type2icon from '../../utils/function/type2icon.js'
// 打乱数组的顺序
import randomArray from '../../utils/function/randomArray.js'
// 对象和数组的深度克隆
import deepClone from '../../utils/function/deepClone.js'
// 对象深度拷贝
import deepMerge from '../../utils/function/deepMerge.js'
// 添加单位
import addUnit from '../../utils/function/addUnit.js'

// 规则检验
import test from '../../utils/function/test.js'
// 随机数
import random from '../../utils/function/random.js'
// 去除空格
import trim from '../../utils/function/trim.js'
// toast提示，对uni.showToast的封装
import toast from '../../utils/function/toast.js'
// 获取父组件参数
import getParent from '../../utils/function/getParent.js'
// 获取整个父组件
import $parent from '../../utils/function/$parent.js'
// 获取sys()和os()工具方法
// 获取设备信息，挂载到$u的sys()(system的缩写)属性中，
// 同时把安卓和ios平台的名称"ios"和"android"挂到$u.os()中，方便取用
import {sys, os} from '../../utils/function/sys.js'
// 防抖方法
import debounce from '../../utils/function/debounce.js'
// 节流方法
import throttle from '../../utils/function/throttle.js'

// 配置信息
import config from '../../utils/config/config.js'
// 各个需要fixed的地方的z-index配置文件
import zIndex from '../../utils/config/zIndex.js'
// 处理数组的函数库，使用的 是collect.js 使用文档 在 https://collect.js.org/installation.html
import arr from '../../utils/function/arr'
// 生成统一的路径，
import path from '../../utils/function/path'
import gets from "../../utils/function/gets";

// md5 转换，
import {md5} from '../../utils/function/md5'
// encrypt 加密，
import {encrypt} from '../../utils/function/encrypt'
// encrypt 解密，
import {decrypt} from '../../utils/function/encrypt'

const func = {
  queryParams: queryParams,
  route: route,
  timeFormat: timeFormat,
  date: timeFormat, // 另名date
  timeFrom,
  colorGradient: colorGradient.colorGradient,
  colorToRgba: colorGradient.colorToRgba,
  guid,
  color,
  sys,
  os,
  type2icon,
  randomArray,
  wranning,
  get: http.get,
  post: http.post,
  put: http.put,
  'delete': http.delete,
  hexToRgb: colorGradient.hexToRgb,
  rgbToHex: colorGradient.rgbToHex,
  test,
  random,
  deepClone,
  deepMerge,
  getParent,
  $parent,
  addUnit,
  trim,
  type: ['primary', 'success', 'error', 'warning', 'info'],
  http,
  toast,
  config, // uView配置信息相关，比如版本号
  zIndex,
  debounce,
  throttle,
  arr,
  path,
  gets,
  md5,
  encrypt,
  decrypt,
}

import zbStore from '../store'
let zbPlugins = {version:'1'}
zbPlugins.install = function(Vue, opts = {}) {
  components.forEach(component => {
    Vue.component(component.name, component);
  });
  directives.forEach(directive => {
    Vue.directive(directive.name, directive);
  });
  Vue.prototype.$zbStore = zbStore
  Vue.prototype.$zbPlugins = func;
};
export default zbPlugins
